/*
 * @Descripttion: 
 * @version: V1.0.0
 * @Author: Maverick
 * @Date: 2025-03-29 12:06:55
 * @LastEditors: Maverick
 * @LastEditTime: 2025-03-29 20:22:42
 */

 #ifndef __SQ_LIST_H__
 #define __SQ_LIST_H__
 //定义顺序表的类模板
 
 namespace maverick{
 namespace sqlist{
 #ifndef DEFAULT_SIZE
 #define DEFAULT_SIZE 10000
 #endif
 template <typename  ElemType>
 class SqList
 {
 protected:
     int count;
     int maxSize;
     ElemType *elems;
 public:
     SqList(int size=DEFAULT_SIZE);//构造函数模板
     virtual ~SqList();
     int Length() const;//返回线性表元素个数。
     bool Empty() const;//如果为空，返回true;否则返回false.
     void Clear();//清空线性表
     void Traverse(void (*visit)(const ElemType &)) const;//依次对线性表的每个元素调用函数visit
     bool GetElem(int position,ElemType &e) const;//用e返回第i个位置的元素值.
     bool SetElem(int position,const ElemType &e);//将线性表的第position个元素赋值为e.
     bool Delete(int position,ElemType &e);//删除线性表的第i个位置的元素，并用e返回，长度减去1.
     bool Delete(int position);//删除元素
     bool Insert(int position,const ElemType &e);
 
     SqList(const SqList<ElemType> &source);
     //拷贝构造函数
     SqList<ElemType> &operator=(const SqList<ElemType> &source);
 
 };
 }//namespace sqlist 
 }//namespace maverick
 
 #endif
 